package com.hlkj.pay.dto.merchant;

import java.io.Serializable;
import java.util.List;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

import com.hlkj.framework.common.valid.EnumValid;
import com.hlkj.pay.dto.provider.DefaultFeeConfig;
import com.hlkj.pay.dto.provider.SeniorFeeConfig;
import com.hlkj.pay.dto.provider.StepFeeConfig;
import com.hlkj.pay.enums.CommonEnum;
import com.hlkj.pay.infrastructure.model.pay.PayWayDO;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
* 服务商支付方式费率配置信息
* @TableName t_provider_channel_fee_config
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ProviderChannelFeeConfigList implements Serializable {
    private static final long serialVersionUID = -8907922247175135025L;
    /**
    * 支付方式编码
    */
    @NotBlank(message="[支付方式编码]不能为空")
    @Schema(description = "支付方式编码")
    private String payWayCode;
    
    /**
     * 支付方式编码
     */
    @Schema(description="后端用字段 提交不传")
    private PayWayDO payWayDO;
    /**
    * 状态 0 关闭 1 启用
    */
    @Schema(description = "状态 0 关闭 1 启用")
    // @NotNull(message="[状态]不能为空")
    @EnumValid(value = CommonEnum.YES_NO_TYPE.class, message = "状态 无效")
    private Integer status;
    /**
    * 是否支持进件 0 不支持 1 支持
    */
    @Schema(description = "是否支持进件 0 不支持 1 支持")
    @NotNull(message="[是否支持进件]不能为空")
    @EnumValid(value = CommonEnum.YES_NO_TYPE.class, message = "是否支持进件 无效")
    private Integer applyType;
    @Schema(description = "默认费率")
    @Valid
    private DefaultFeeConfig defaultFeeConfigValue;
    /**
    * 是否阶梯费率 0 否 1 是
    */
    @Schema(description = "是否阶梯费率 0 否 1 是")
    @NotNull(message="[是否阶梯费率]不能为空")
    @EnumValid(value = CommonEnum.YES_NO_TYPE.class, message = "是否阶梯费率 无效")
    private Integer stepFeeType;
    /**
    * 阶梯费率配置
    */
    @Schema(description = "阶梯费率配置")
    @Valid
    private List<StepFeeConfig> stepFeeConfigs;
    /**
    * 是否高级配置 0 否 1 是
    */
    @Schema(description = "是否高级配置 0 否 1 是")
    @NotNull(message="[是否高级配置]不能为空")
    @EnumValid(value = CommonEnum.YES_NO_TYPE.class, message = "是否高级配置 无效")
    private Integer seniorFeeType;
    /**
    * 高级配置
    */
    @Schema(description = "高级配置")
    @Valid
    private SeniorFeeConfig seniorFeeConfigValue;

}
